const isArray = require('../Base/isArray')
const includes = require('../Array/includes')

/**
 * V1 判断数组是否包含另一数组
 * @param {*} arr1 数组
 * @param {*} arr2 被包含数组
 * @return {Boolean} arr1包含arr2时，返回 true
 */
// function includeArrays(arr1, arr2) {
//   if (isArray(arr1) && isArray(arr2)) {
//     // arr2中任一个元素不存在于arr1，则直接返回false
//     for (let i2 of arr2) {
//       if (!arr1.includes(i2)) return false
//     }
//     return true
//   }
//   // TODO 需考虑arr1和arr2非Array的情况
//   return arr1.includes(arr2)
// }

/**
 * V2 判断数组是否包含另一数组
 * @param {*} arr1 数组
 * @param {*} arr2 被包含数组
 * @return {Boolean} arr1包含arr2时，返回 true
 */
function includeArrays(arr1, arr2) {
  if (isArray(arr1) && isArray(arr2)) {
    // arr2中任一个元素不存在于arr1，则直接返回false
    for (let i2 of arr2) {
      if (!includes(arr1, i2)) return false
    }
    return true
  }
  // 可能存在参数一个为数组，一个为其他类型，如 ([1,2,3], 2)，此时也要返回 true
  return includes(arr1, arr2)
}

module.exports = includeArrays

// console.log(includeArrays([1, 2, 3], [2, 3, 4])) // false
// console.log(includeArrays([1, 2, 3], [2, 3])) // true
// console.log(includeArrays([1, 2, 3], 2)) // true
